$(function() {
	var B={};
	/**
	 * 显示sku,
	 * 数据格式参考：
	 * var proprity=[
				  ['颜色','容量','库存','价格'],
				  ['红色','16',10,16],
				  ['蓝色','20',5,18],
				  ['白色','16',5,18]
				];
	    var proprity2=[
		  ['材质','型号','模板','库存','价格'],
		  ['玻璃','A','清新',10,16],
		  ['铝','B','清新',5,18],
		  ['仿木','C','高雅',5,18]
		];
	 * 思路：
	 * 1.格式化成一行一行显示，并去除重复。并保存该属性对应可先的属性值。
	 * 2.把每一行抽象为一个类。
	 * 3.初始化时,把显示的一个sku按钮$对象，用对象key的形式，缓存起来。方便后边，便利显示或隐藏。
	 * @param {[type]} dataProprity [description]
	 * @param {[type]} $container   [description]
	 */
	B.ProductSKUShow=function(dataProprity,$container){
		var THIS=this;
		var proprityCount=dataProprity[0].length-2;
		var arrRow=[];
		var arrValue={};//用：属性1_属性2_..  形式做为下标，来存储库存和价格
		var $row=[];
		var i=0;
		for(;i<proprityCount;i++){
			arrRow.push({});
		}
		var count=dataProprity.length;
		for(i=1;i<count;i++){
			var item=dataProprity[i];
			var j=0;
			var arrValueKey='';
			for(;j<proprityCount;j++){
				//组合成：属性名1,属性名2的格式。
				var arrName=[];
				for(var jj=0;jj<proprityCount;jj++){
					arrName.push(item[jj]);
				}
				if(!arrRow[j][item[j]]){
					arrRow[j][item[j]]={title:item[j],correlationName:arrName};//记录相关的记录行数
				}else{
					arrRow[j][item[j]]['correlationName']=arrRow[j][item[j]]['correlationName'].concat(arrName);
				}
				//合成key键
				if(arrValueKey==''){
					arrValueKey=dataProprity[i][j];
				}else{
					arrValueKey+=','+dataProprity[i][j];
				}
			}
			arrValue[arrValueKey]=[item[proprityCount],item[proprityCount+1]];
		}
		/**
		 * 行类
		 * @param {[type]} index     第几行
		 * @param {[type]} mainTitle 每行的属性名
		 * @param {[type]} doClickItem   点击行元素的回调方法：格式:function(arrCorrelationId)
		 */
		function RowItem(index,mainTitle,doClickItem){
			var _index=index; //第几行
			var _html='';
			var _doClickItem=doClickItem;
			_html+='<div class="item"><div class="left">'+mainTitle+'：</div><div class="right">';
			_html+='</div></div>';
			var _$html=$(_html);
			var _isAppendTo=false;
			var $itemContainer=_$html.find('.right');

			this.addItem=function(title){
				var $a=$('<a class="sku" href="#" >'+title+'</a>');
				$itemContainer.append($a);
				return $a;
			}
			this.getCurrentSelectName=function(){
				return _$html.find('.select').html();  //遍历选中的值，做为选中的值。
			}
			this.appendTo=function($target){
				if(_isAppendTo) return; //只能加一次
				_isAppendTo=true;
				var $sku=_$html.find('.sku');
				//遍历加点击事件
				$sku.each(function(index,item){
					var $this=$(this);
					$this.click(function(e){
						e.preventDefault();
						var $cThis=$(this);
						//console.log(arrRow[_index]);
						//console.log(arrRow[_index][$cThis.html()]);
						var correlationName=(arrRow[_index][$cThis.html()]['correlationName']);
						if($cThis.hasClass('select')){
							$cThis.removeClass('select');
							//THIS.allSkuBtnNoSelect();//回归到所有
							//console.log(index,$cThis.index(),'no select');
						}else{
							$cThis.addClass('select');
							if(_doClickItem) _doClickItem(correlationName); //选中的时候，只显示关联的
							//console.log(index,$cThis.index(),'select');
						}
						//不是当前的按钮，所有选项隐藏
						$sku.each(function(index,item){
							var $TemItem=$(item);
							if($cThis.index()!=$TemItem.index()) $TemItem.removeClass('select');
						});//end $sku.each
					});
					//
				});
				$target.append(_$html);
			}
		}
		//
		function clickItem(correlationName){
			THIS.allSkuBtnNoSelect();
			$.each(correlationName,function(index,item){
				$objCache[item].removeClass('disable');
			});
		}
		var $objCache={};
		var ctem=arrRow.length;
		var arrRI=[];//为了遍历出当前先中的值。
		for(var k=0;k<ctem;k++){
			var item=arrRow[k];
			var mainTitle=dataProprity[0][k];
			var RI=new RowItem(k,mainTitle,clickItem);
			for(key in item){
				var title=item[key].title;
				$objCache[title]=RI.addItem(title); //以属性名为索引，缓冲保存$ 对象，方便后面，点击某个属性，快速显示和隐藏对应关联的属性值。
			}
			arrRI.push(RI);
			RI.appendTo($container);
		}
		/*-------------public 方法 ------------------------*/
		//所有sku选项回归到没有选中的状态。
		this.allSkuBtnNoSelect=function(){
			for(key in $objCache){
				var $a=$objCache[key];
				$a.addClass('disable');
			}
		}
		/**
		 * 获得价格：注如果不传入key,返回当前选中的价格
		 * @param  {[type]} key [description]注：可为空
		 * @return {[type]}     [description]
		 */
		this.getSelectPrice=function(key){
			var _key=key||this.getSelectValue();
			if(_key=='') return undefined;
			return arrValue[_key][1];
		}
		/**
		 * 获得价格：注如果不传入key,返回当前选中的库存
		 * @param  {[type]} key [description] 注：可为空
		 * @return {[type]}     [description]
		 */
		this.getSelectStock=function(key){
			var _key=key||this.getSelectValue();
			if(_key=='') return undefined;
			return arrValue[_key][0];
		}
		//获得当前选中的值。
		this.getSelectValue=function(){
			var strTem='';
			var c=arrRI.length;
			for(var i=0;i<c;i++){
				var nameTem=arrRI[i].getCurrentSelectName();
				if(nameTem==''||nameTem==null){
					return '';
					break;
				}else{
					if(strTem!=''){
						strTem+=','+nameTem;
					}else{
						strTem=nameTem;
					}
				}
			}
			return strTem;
		}
		//console.log(html);
	}
	//--------------------滑动切换图片
	var mc = new Hammer(document.getElementById('image-list'));
	mc.on("panleft", function(e) {
		$('#image-list').carousel('next');
	});
	mc.on("panright", function(e) {
		$('#image-list').carousel('prev');
	});
	//-----------------限制只能输入数字-----------------
	var commonCheckStr = "input[type=text]"; //检查的字符串
	var eventName = 'keyup blur paste';

	$("#count").delegate(null, eventName, function(e) {
		if (e.type == "focusout" || e.type == "paste") {
			checkIsNumber($(e.target), true); //检查输入值是否为数字
		} else {
			checkIsNumber($(e.target)); //检查输入值是否为数字
		}
	});


	/**
	 * 检查输入值是否为数字
	 * @param {String} element 目标元素
	 * @param {Boolean} checkValid 检查数字是否有效
	 */
	function checkIsNumber(element, checkValid) {
		var value = element.val().replace(/[^0123456789]/g, '');
		if (value == "") {
			value = 1;
		}
		if (checkValid) {
			var re = /^[1-9]\d*|^[1-9]\d*\d*|0\.\d*[1-9]\d*$/; //非负整数+小数点  							
			if (!re.test(value) && value != "") {
				$(element).val(1);
			} else {
				element.val(value);
			}
		} else {
			element.val(value);
		}
	};
	var $addProductToCart=$("#addProductToCart");
	var pulbicIsEmptyParam=parseInt($addProductToCart.attr("data-isEmptyparam")); //1为
	var $totalMoney=$("#totalMoney");
	var $count=$("#count");
	var proprity=$("#skuForJs").val();
	var PSKU;
	if(pulbicIsEmptyParam!=1){
		proprity=$.parseJSON(proprity);
		PSKU=new B.ProductSKUShow(proprity,$('#skuContainerShow'));
	}
	//alert('当前选中的值：'+PSKU.getSelectValue()+',库存:'+PSKU.getSelectStock()+',价格:'+PSKU.getSelectPrice());
	$("#plus").click(function() {
		if(PSKU){
			var stock=10000;
			stock=PSKU.getSelectStock();
			if(stock==undefined){
				General.alert('请先选好属性');
				return;
			}
			var result = 1;
			try {
				var c = $("#count").val();
				c = parseInt(c);
				if (isNaN(c)) {
					c = 0;
				}
				result = c;
				if(result+1>stock){
					General.alert('超过库存');
					return;
				}
				result++;
				$count.val(result);
				countTotal(); //计算总价
			} catch (e) {}
		}else{
			var result = 1;
			try {
				var c = $("#count").val();
				c = parseInt(c);
				if (isNaN(c)) {
					c = 0;
				}
				result = c;
				result++;
				$count.val(result);
				countTotal(); //计算总价
			} catch (e) {}
		}
		
	});
	$("#minus").click(function() {
		if(PSKU){
			var stock=PSKU.getSelectStock();
			if(stock==undefined){
				General.alert('请先选好属性');
				return;
			}
		}
		var result = 1;
		try {
			var c = $("#count").val();
			c = parseInt(c);
			if (isNaN(c)) {
				c = 0;
			}
			result = c;
			result--;
			if (result < 1)
				result = 1;
			$count.val(result);
			countTotal(); //计算总价
		} catch (e) {}
	});
	var onePrice=parseInt($('#price').html()); //没有属性的时候用这个
	function countTotal(){
		if(PSKU){
			var p=PSKU.getSelectPrice();
			if(p==undefined) $totalMoney.html('');
			var c=parseInt($count.val());
			if(!c) $totalMoney.html('');
			$totalMoney.html(p*c);
		}else{
			var c=parseInt($count.val());
			$totalMoney.html(onePrice*c);
		}
	}
	//-----------------切换收藏状态-----------------
	//切换收藏状态
	function toggleFavorit() {
		var f = $(".favorite");
		var icon = f.find("i");
		var state = f.find("span");
		if (icon.hasClass("fa-star-o")) {
			icon.removeClass("fa-star-o").addClass("fa-star");
			state.html("已收藏");
		} else {
			icon.removeClass("fa-star").addClass("fa-star-o");
			state.html("收藏");
		}
	}
	window.toggleFavorit = toggleFavorit;
	//-----------------购物车-----------------
	//切换不同属性时显示相应的价格
	function initCart() {
		//console.log('initCart..');
		var publicUrl=$addProductToCart.attr("data-href");
		var pubOpTyle=1;//1加入购物车  2立即购买
		$("#addProductToCart").on("click", function(e) {
			General.stopEvent(e);
			var url = $(this).attr("data-href");
			if(pulbicIsEmptyParam==1){
				addToCart(url);
				return;
			}
			
			
			publicUrl=url;
			pubOpTyle=1;
			$windowSku.modal();
		});
		$("#buy").on("click", function(e) {
			General.stopEvent(e);
			var url = $(this).attr("data-href");
			if(pulbicIsEmptyParam==1){
				buyNow(url);
				return;
			}
			publicUrl=url;
			pubOpTyle=2;
			$windowSku.modal();
		});
		
		//弹出sku选择框
		var $windowSku=$('#windowSku');
		$("#btnPopSku").click(function(){
	        $windowSku.modal();
	      });
		$("#windowSkuBtnOk").click(function(){
			var url=publicUrl;
			if(pubOpTyle==1){  //加入购物车
				//判断属性是否被选中
				var properties = $("#sku .property");
				if (properties.length > 0) {
					//多属性
					var count = properties.filter(".selected").length;
					if (count < 1) {
						General.alert("请先选择产品属性！");
					} else {
						//开始添加到购物车
						addToCart(url);
					}
				} else {
					//开始添加到购物车
					addToCart(url,$addProductToCart);
				}
			}else if(pubOpTyle==2){  //立即购买
				//判断属性是否被选中
				var properties = $("#sku .property");
				//			console.log(properties)
				if (properties.length > 0) {
					//多属性
					var count = properties.filter(".selected").length;
					if (count < 1) {
						General.alert("请先选择产品属性！");
					} else {
						//开始添加到购物车
						buyNow(url);
					}
				} else {
					//开始添加到购物车
					buyNow(url);
				}
			}
			$windowSku.modal('hide');
			
			
		});
	};
	function getProductSku() {
		var sku=PSKU?PSKU.getSelectValue():'';
		return sku;
	};
	//开始添加到购物车
	function addToCart(url) {
		var id = $("#productId").val(); // 购物车商品ID
		var sku = getProductSku(); // sku信息
		var num = $("#count").val();
		var data = {
			goods_id: id,
			quantity: num,
			spec: sku
		};
		Common.ajaxPostWantResult(url, data, "", null, null, true, addAnimation,num, true);
	};

	// 立即购买
	function buyNow(url){
		var id = $("#productId").val(); // 购物车商品ID
		var sku = getProductSku(); // sku信息
		var num = $("#count").val();
		var data = {
			goods_id: id,
			quantity: num,
			spec: sku
		};
		Common.ajaxPostWantResult(url, data, "", null, null, true, 
			function(data){
				window.location.href = '/shop/cart/';
			}, 
		num, true);
	}
	//飞入购物车的动画
	var startFly_pageX=0,startFly_pageY=0;
	function startFly(){
		var offset = $("#movieBuyEnd").offset();
		var addcar =$('#image-list .active');
		var img = addcar.find('img').attr('src');
		var flyer = $('<img src="'+img+'" width="80%">');
		flyer.fly({
			start: {
				left: 5,
				top: 80
			},
			end: {
				left: offset.left+10,
				top: offset.top+10,
				width: 0,
				height: 0
			},
			onEnd: function(){
				this.destory();
			}
		});
	}
	//添加动画
	function addAnimation(data) {
		//
		var num=data["successParam"];
		//购物车数量
		var count = parseInt($("#cartProductCount").html());
		num = parseInt(num);
		if (isNaN(count)) {
			count = 0;
		}
		if (isNaN(num)) {
			num = 0;
		}
		if(num!=0){
			num += count;
			$("#cartProductCount").html(num);
			//进入到购物车的动画
			startFly($("#addProductToCart"));
		}else{
			alert('获得产品信息错误');
		}
		
	}
	initCart();

	//-----------------动态调整窗口大小-----------------
	adjustIframe();

	function adjustIframe() {
		var maxHeight = 0.96;
		var height = $(window).height();
		height *= maxHeight;
		//获取图片大小
		var imgHeight = $("#shareImage").height();
		//      console.log(imgHeight+":"+height);
		if (height < imgHeight) {
			imgHeight = height;
			$("#shareImage").css("height", imgHeight + "px");
		} else {
		}
	}
	$(window).resize(adjustIframe);
});